#include <REGX52.H>
#include "Delay.h"
#include "UART.h"
#include "car.h"
#include "digitaltube.h"

//实验现象：使用蓝牙模块，通过手机APP进行蓝牙连接可控制小车运行，同时数码管显示对应键编码。
//          按照智能小车开发攻略中蓝牙教程，配置好对应键的值保存即可。
//          前进-->0X10
//          后退-->0X11
//          左转-->0X20
//          右转-->0X21
//          停止-->0X30
//实验注意：需要使用蓝牙模块插在小车的WIFI/蓝牙接口处。

sbit STA=P2^5;
sbit BEEP=P0^2;
#define LED_PORT P1

void LED_Lightone(int ledNum);

//主函数
void main()
{
    
    STA = 0;
    BEEP = 1;
	BlueTooth_Init();
        
	while(1){   
		//Blue_DataPros(recvData);
		//DigDisplay();
        
		switch(USART_RX_BUF[0]){
            case BLUETOOTH_STOP:
                pwm0();
                //SMG_PORT = 0x00;//扩展板v1的数码管连接到P3，操作会引起串口异常！
                LED_PORT = 0xff;
                break;
			case BLUETOOTH_FORWARD_SPEED1: 
                pwm1();
                //NIXIE_1bit(1);
                LED_Lightone(1);
                break;
			case BLUETOOTH_FORWARD_SPEED2: 
                pwm2();
                //NIXIE_1bit(2);
                LED_Lightone(2);
                break;
			case BLUETOOTH_FORWARD_SPEED3: 
                pwm3();
                //NIXIE_1bit(3);
                LED_Lightone(3);
                break;
			case BLUETOOTH_BACKWARD_SPEED1: 
                pwm4();
                //NIXIE_1bit(4);
                LED_Lightone(4);
                break;
			case BLUETOOTH_BACKWARD_SPEED2: 
                pwm5();
                //NIXIE_1bit(5);
                LED_Lightone(5);
                break;
			case BLUETOOTH_BACKWARD_SPEED3: 
                pwm6();
                //NIXIE_1bit(6);
                LED_Lightone(6);
                break;            
		}
//		BlueTooth_SendData(USART_RX_BUF[0]); //用于串口调试
        delay_ms(1000);
	}							
}

//主函数
void main2()
{
	STA = 0;
    BEEP = 1;
	BlueTooth_Init();
    
	while(1){
//        pwm3();
//        NIXIE_1bit(3);
//        LED_Lightone(3);
//        
//        pwm6();
//        NIXIE_1bit(6);
//        LED_Lightone(6);
        
		Blue_DataPros(USART_RX_BUF[0]);
		DigDisplay();

		switch(USART_RX_BUF[0]){
			case BLUETOOTH_FORWARD: 
                Car_ForwardRun();
                break;
			case BLUETOOTH_BACKWARD: 
                Car_BackwardRun();
                delay_10us(300);
                Car_StopRun();
                delay_10us(300);
                Car_BackwardRun();
                break;
			case BLUETOOTH_LEFT: 
                Car_LeftRun();
                break;
			case BLUETOOTH_RIGHT: 
                Car_RightRun();
                break;
			case BLUETOOTH_STOP: 
                Car_StopRun();
                break;
		}
//		BlueTooth_SendData(USART_RX_BUF[0]); //用于串口调试
//        delay_ms(500);
	}							
}

// 点亮指定的led
void LED_Lightone(int ledNum)
{
    if (ledNum >=1 && ledNum <= 8) {
        LED_PORT = ~(0x01 << (ledNum-1));    
    }
}


//// 串口中断接收函数
//void UART_Routine() interrupt 4		//串口中断类型号是4
//{
//	if(RI==1) {					//如果接收标志位为1，接收到了数据	
//		LED = ~SBUF;				//读取数据，取反后输出到LED
//		UART_SendByte(SBUF);	//将收到的数据发回串口
//		RI=0;					//接收标志位清0
//	}
//}
